home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / CastExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  2.4 KB  |  59 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.java.ClassNotFound;
  6. import sun.tools.java.Constants;
  7. import sun.tools.java.Environment;
  8.  
  9. public class CastExpression extends BinaryExpression {
  10.    public CastExpression(int var1, Expression var2, Expression var3) {
  11.       super(34, var1, var2.type, var2, var3);
  12.    }
  13.  
  14.    public long checkValue(Environment var1, Context var2, long var3, Hashtable var5) {
  15.       super.type = super.left.toType(var1, var2);
  16.       var3 = super.right.checkValue(var1, var2, var3, var5);
  17.       if (!super.type.isType(13) && !super.right.type.isType(13)) {
  18.          if (super.type.equals(super.right.type)) {
  19.             return var3;
  20.          } else {
  21.             try {
  22.                if (var1.explicitCast(super.right.type, super.type)) {
  23.                   super.right = new ConvertExpression(super.where, super.type, super.right);
  24.                   return var3;
  25.                }
  26.             } catch (ClassNotFound var7) {
  27.                var1.error(super.where, "class.not.found", var7.name, Constants.opNames[super.op]);
  28.             }
  29.  
  30.             var1.error(super.where, "invalid.cast", super.right.type, super.type);
  31.             return var3;
  32.          }
  33.       } else {
  34.          return var3;
  35.       }
  36.    }
  37.  
  38.    public Expression inline(Environment var1, Context var2) {
  39.       return super.right.inline(var1, var2);
  40.    }
  41.  
  42.    public Expression inlineValue(Environment var1, Context var2) {
  43.       return super.right.inlineValue(var1, var2);
  44.    }
  45.  
  46.    public void print(PrintStream var1) {
  47.       var1.print("(" + Constants.opNames[super.op] + " ");
  48.       if (super.type.isType(13)) {
  49.          super.left.print(var1);
  50.       } else {
  51.          var1.print(super.type);
  52.       }
  53.  
  54.       var1.print(" ");
  55.       super.right.print(var1);
  56.       var1.print(")");
  57.    }
  58. }
  59.